#include "agrclt.h"
#include "ui_agrclt.h"
#include <QDialog>
#include <QFileDialog>
#include <QMessageBox>

agrclt::agrclt(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::agrclt)
{
    ui->setupUi(this);
    clearDatsAll( );

    connect( ui->QPBCancelar, SIGNAL(clicked()), this, SLOT(cnfCierreD()) );
    connect( ui->QPBCargarImagen, SIGNAL(clicked()), this, SLOT(browserImg()) );
    connect( ui->QPBGuardarNuevo, SIGNAL(clicked()), this, SLOT(checkDatsAll()) );
    connect( ui->QPBGuardarNuevo, SIGNAL(clicked()), this, SLOT(saveAndNew()) );
    connect( ui->QPBGuardarCerrar, SIGNAL(clicked()), this, SLOT(checkDatsAll()) );
    connect( ui->QPBGuardarCerrar, SIGNAL(clicked()), this, SLOT(saveAndClose()) );
    connect( this, SIGNAL(DatsCorrect()), this, SLOT(saveDatsAll()) );
    connect( ui->QPBQuitarImagen, SIGNAL(clicked()), this, SLOT(clearImg()) );

    //PUNTERO PARA LOS MENSAJES DE CANCELACION DE ALGUNA
    //ACCION EN ALGUN WIDGET
    cnlclApp = cnlApp::initCnlApp();

    //PUNTERO PARA LA CONEXION CON LA BASE DE DATOS
    cndb = conexionDB::instance( );
    //PUNTERO A LA ESTRUCTURA DE TODOS LOS DATOS
    dtsClt = conexionDB::instanceDats( );

    //VARIABLE PARA INDICAR SI HAY QUE CERRAR EL WIDGET
    //ACTUAL
    clsWdt = false;

    ui->lECelularC->setValidator( new QDoubleValidator );
    ui->lECelularC->setMaxLength( 18 );
    //ui->lECelularC->setInputMask( "000-00-00-00-00-00-000" );
    ui->lETelefonoC->setValidator( new QDoubleValidator );
    ui->lETelefonoC->setMaxLength( 12 );
    //ui->lEEdadC->setInputMask( "00" );
    ui->lEEdadC->setValidator( new QIntValidator );
    ui->lEEdadC->setMaxLength(2);

    ui->LETefonoEC->setValidator( new QDoubleValidator );
    ui->LETefonoEC->setMaxLength(12);
    ui->LEExtencionNumeroEmp->setValidator( new QDoubleValidator );
    ui->LEExtencionNumeroEmp->setMaxLength(12);
    ui->LEFaxEmpresa->setValidator( new QDoubleValidator );
    ui->LEFaxEmpresa->setMaxLength(12);

}

agrclt::~agrclt()
{
    delete ui;
}

//FUNCION QUE SE ENCARGA DE LIMPIAR LOS CAMPOS
void agrclt::clearDatsAll( void ){
    ui->lENombreC->setText( "" );
    ui->lEApeC->setText( "" );
    ui->lECelularC->setText( "" );
    ui->lETelefonoC->setText( "" );
    ui->lEEdadC->setText( "" );
    ui->lEEmail->setText( "" );
    ui->lblImagenContacto->setText("Sin imagen de contacto");
    ui->lEId->setText("");

    ui->LEEmail2->setText("");
    ui->LEFcaebook->setText("");
    ui->LEWeb->setText("");
    ui->LETwietter->setText("");
    ui->plainTextEdit->clear();
    ui->LETefonoEC->setText( "" );
    ui->LEExtencionNumeroEmp->setText( "" );
    ui->LEFaxEmpresa->setText( "" );
    ui->tEACEDireccion->setText("");
    return;
}

//FUNCION QUE CARGA LA RUTA DE LA IMAGENA
//QUE REPRESENTARA AL CONTACTO
void agrclt::loadImgContacto( const QString path ){
    ui->lblImagenContacto->setPixmap( path );
    ui->QPBQuitarImagen->setEnabled( true );
    return;
}
//SLOT PARA QUITAR LA IMAGEN DEL CONTACTO
void agrclt::clearImg( void ){
    ui->lblImagenContacto->setText("Sin imagen de contacto");
    cndb->clearDtsAll();
    return;
}

//SLOT PARA BUSCAR LA IMAGEN EL DIRECTORIO ACTUAL
void agrclt::browserImg( void ){
    QString filename = QFileDialog::getOpenFileName( this, tr("Seleccionar Imagen de contacto"), QDir::currentPath(),
                tr("Imagen (*.jpeg *.jpg *.gif *.png)") );
        if( !filename.isNull() ){

                //COPIAMOS LA IMAGEN A NUESTRA CARPETA
                QFile imagen( filename );
                imagen.copy( filename, "tmp/mi_contacto.jpeg" );
                loadImgContacto( filename );
        }
    return;
}

//SLOT PARA COMPROBAR QUE LOS DATOS SE HAYAN
//INSERTADO
void agrclt::checkDatsAll( void ){
    QMessageBox alerta;
    QFont serifFont("MS Shell Dlg 2", 10, QFont::Cursive );
    alerta.setFont( serifFont );
    int extra = 0;
    QString title, subtitle;
    title.append("¡Advertencia!");
    if( ui->lENombreC->text() == "" ){
        subtitle.append("No puedes dejar el nombre en blanco");
        extra = 1;
    }else{
        if( ui->lEApeC->text() == "" ){
            subtitle.append("No puedes dejar los apellidos en blanco");
            extra = 1;
        }else{
            if( ui->lECelularC->text() == "" ){
                subtitle.append("No puedes dejar el campo de celular en blanco");
                extra = 1;
            }else{
                if( ui->lEEmail->text() == "" ){
                    subtitle.append("No puedes dejar el e-mail en blanco");
                    extra = 1;
                }else{
                    if( ui->lEId->text() == "" ){
                        subtitle.append("No puedes dejar el ID en blanco");
                        extra = 1;
                    }
                }
            }
        }
    }
    if( extra == 1 ){
        alerta.setWindowTitle( title );
        alerta.setText( subtitle );
        alerta.setIcon( QMessageBox::Warning );
        aceptar =  alerta.addButton("Aceptar", QMessageBox::YesRole );
        alerta.exec();
    }else{
        //PUNTERO A LA ESTRUCTURA DE TODOS LOS DATOS
        dtsClt->nombre.append( ui->lENombreC->text() );
        dtsClt->apellidos.append( ui->lEApeC->text() );
        dtsClt->edad.append( ui->lEEdadC->text() );
        dtsClt->celular.append( ui->lECelularC->text() );
        dtsClt->email.append( ui->lEEmail->text() );
        dtsClt->id.append( ui->lEId->text() );
        dtsClt->sexo.append( ui->cBSexo->currentText() );
        if( ui->lETelefonoC->text() == "" ){
            dtsClt->telefono.append( "S / N" );
        }else{
            dtsClt->telefono.append( ui->lETelefonoC->text() );
        }
        if( ui->tEACEDireccion->toPlainText() == "" ){
            dtsClt->direccion.append( "No se ha especificado direccion alguna" );
        }else{
            dtsClt->direccion.append( ui->tEACEDireccion->toPlainText() );
        }
        if( ui->LETefonoEC->text() == "" ){
            dtsClt->telefonot.append( "S / N" );
        }else{
            dtsClt->telefonot.append( ui->LETefonoEC->text() );
        }
        if( ui->LEExtencionNumeroEmp->text() == "" ){
            dtsClt->extencion.append( "S / N" );
        }else{
            dtsClt->extencion.append( ui->LEExtencionNumeroEmp->text() );
        }
        if( ui->LEFaxEmpresa->text() == "" ){
            dtsClt->fax.append( "S / N" );
        }else{
            dtsClt->fax.append( ui->LEFaxEmpresa->text() );
        }
        if( ui->LEEmail2->text() == "" ){
            dtsClt->emailt.append( "No se ha especificado" );
        }else{
            dtsClt->emailt.append( ui->LEEmail2->text() );
        }
        if( ui->LEWeb->text() == "" ){
            dtsClt->web.append( "No se ha especificado" );
        }else{
            dtsClt->web.append( ui->LEWeb->text() );
        }
        if( ui->LEFcaebook->text() == "" ){
            dtsClt->facebook.append( "No se ha especificado" );
        }else{
            dtsClt->facebook.append( ui->LEFcaebook->text() );
        }
        if( ui->LETwietter->text() == "" ){
            dtsClt->twitter.append( "No se ha especificado" );
        }else{
            dtsClt->twitter.append( ui->LETwietter->text() );
        }
        if( ui->plainTextEdit->toPlainText() == "" ){
            dtsClt->nota.append( "No se ha especificado nota alguna" );
        }else{
            dtsClt->nota.append( ui->plainTextEdit->toPlainText() );
        }
        //DESPUES DE COMPROBAR QUE LOS DATOS ESTAN CORRECTOS
        //SE EMITE LA SEÑAL QUE SE ENCARGA DE MANDAR
        //LOS DATOS A SER GUARDADOS EN LA BASE DE DATOS
        emit DatsCorrect();
    }
    return;
}
//SLOT QUE SE ENCARGA DE MANDAR LOS DATOS A GUARDAR
//A LA CLASE QUE GUARDA LOS DATOS EN LA BASE DE DATOS
void agrclt::saveDatsAll( void ){
    if( ui->lblImagenContacto->text() == "No hay imagen cargada" ){
    }else{
        QString image = "tmp/mi_contacto.jpeg";
        QFile imagen( image );
        imagen.copy( "img/clnts/"+ui->lEEmail->text()+".jpeg" );
        //dtsClt->
        imagen.remove( image );
    }
    //
    cndb->initDatsDataBase( "clientes" );
    clearImg();
    clearDatsAll();
    cndb->clearDtsAll();
    clsWdt = true;
    return;
}
//SLOT PARA INDICAR QUE SE GUARDEN LOS DATOS Y SE
//MANTENGA EL WIDGET ABIERTO PARA AGREGAR OTRO CONTACTO
void agrclt::saveAndNew( void ){
    clearDatsAll();
    clearImg();
    return;
}
//SLOT PARA INDICAR QUE SE GUARDEN LOS DATOS Y CIERRA
//MANTENGA EL WIDGET
void agrclt::saveAndClose( void ){
    clearDatsAll();
    clearImg();
    if( clsWdt == true ){
        clsWdt = false;
        close();
    }
    return;
}

//SLOT PARA CONFIRMAR EL CIERRE DE LA VENTANA
void agrclt::cnfCierreD( void ){
    //int sel = cnlclApp->cancelInsertApp( "Cancelando operacion", "¿Realmente deseas descartar los cambios?" );
    int sel = cnlclApp->cancelInsertApp( "NOTA", "Cancelando el ingreso de nuevos datos", "¿Realmente deseas descartar los cambios?" );

    switch (sel) {
        case 0:
            clearDatsAll( );
            close( );
            break;
        case 1:
           break;
        case 2:
           break;
     }
    return;
}



